package com.xb.loan.usercenter.user.user.dao;

import com.xb.loan.usercenter.user.user.dao.bean.UserInfo;
import com.xb.loan.usercenter.user.user.dao.bean.UserInfoIdentify;
import com.xb.loan.usercenter.user.user.dao.bean.UserInfoIdentifyBank;
import com.xb.loan.util.mybatis.MyBatisRepository;

import java.util.List;
import java.util.Map;

/**
 *
 * 类  描  述 : 用户数据库操作
 */
@MyBatisRepository
public interface UserInfoDao {

    /**
     * 插入用户信息
     * @param userInfo    用户对象
     * @return  返回数据库操作记录条数
     */
    int insert(UserInfo userInfo);
    
    /**
     * 根据用户编码查询用户信息
     * @param userId    用户编码
     * @return  返回数据库操作记录条数
     */
    int deleteUserInfo(String userId);
    
    int updateUserInfo(Map<String, Object> params);
    
    int updateUserInfoObj(UserInfo userInfo);
    /**
     * 根据编码查询用户信息
     * @param userId    用户编码
     * @return      返回用户信息
     * 2015年8月31日 by wuqinglong
     */
    UserInfo queryUserInfoById(String userId);
    
    /**
     * 根据编码查询用户信息(改接口跟状态无关)
     * @param userId    用户编码
     * @return      返回用户信息
     */
    UserInfo queryAnyUserInfoById(String userId);
    
    List<UserInfo> queryUserInfoByRealId(Map<String, Object> params);
    
    UserInfo queryUserInfoByUserType(Map<String, Object> params);
    
    /**
     * 分页查询用户信息集合
     * @param map
     * @return      返回用户信息集合
     */
    List<UserInfo> queryUserInfo(Map<String, Object> map);

    /**
     * 根据条件查询用户记录总条数
     * @param map   查询条件Map
     * @return
     */
    int queryUserInfoCount(Map<String, Object> map);

    /**
     * 查询用户详细信息-带渠道权限
     * @param map
     * @return
     * 2015年11月17日 by zhangyi
     */
    public List<Map<String,Object>> queryUserDetailAccess(Map<String, Object> map);
    public int queryUserDetailCountAccess(Map<String, Object> map);

 	public int queryTotalRegisterUserCount(String partnerId);

 	public int queryTodayRegisterUserCount(String partnerId);


	public List<UserInfoIdentifyBank> queryUserInfoIdentifyBank(Map<String, Object> map);

	public int queryUserInfoIdentifyBankCount(Map<String, Object> map);

	public List<UserInfoIdentify> queryUserInfoIdentify(Map<String, Object> map);

	public int queryUserInfoIdentifyCount(Map<String, Object> map);

    /**
     * 根据token查询用户信息
     * @param token    用户token编码
     * @return      返回用户信息
     * 2015年8月31日 by wuqinglong
     */
    UserInfo queryUserInfoByToken(String token);
}